<?php
/**
* wechat php test
*/

    //define your token
    define("TOKEN", "shanmuzhuo");
    $wechatObj = new Index();
    $wechatObj->valid();

class Index
{
  public function valid()
  {
  $echoStr = $_GET["echostr"];

  //valid signature , option
  if($this->checkSignature()){
      echo $echoStr;
      exit;
  }else{
    $this->responseMsg();
    exit; //如果没有echostr，则返回消息
  }
}

public function responseMsg()
{
      //get post data, May be due to the different environments
      $postStr = $GLOBALS["HTTP_RAW_POST_DATA"];
      $file  = 'log.txt';
      $content = "fromUsername===========\n";
      if($f  = file_put_contents($file, $content,FILE_APPEND)){// 这个函数支持版本(PHP 5) 
          echo "";
      }

      //extract post data
      if (!empty($postStr)){

        $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
        $fromUsername = $postObj->FromUserName;
        $toUsername = $postObj->ToUserName;

/*        $file  = 'log.txt';
        $content = "fromUsername===========".$fromUsername."\n";
        if($f  = file_put_contents($file, $content,FILE_APPEND)){// 这个函数支持版本(PHP 5) 
          echo "写入成功。<br />";
        }*/

        /*if($postObj->MsgType == 'event'){ //如果XML信息里消息类型为event
         if($postObj->Event == 'subscribe'){ //如果是订阅事件
          $contentStr = "欢迎订阅misaka去年夏天！\n更多精彩内容：http://blog.csdn.net/misakaqunianxiatian";
          $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgtype, $contentStr);
          echo $resultStr;
          exit();
         }
        }*/

        $keyword = trim($postObj->Content);
        $time = time();
        $textTpl = "<xml>
        <ToUserName><![CDATA[%s]]></ToUserName>
        <FromUserName><![CDATA[%s]]></FromUserName>
        <CreateTime>%s</CreateTime>
        <MsgType><![CDATA[%s]]></MsgType>
        <Content><![CDATA[%s]]></Content>
        <FuncFlag>0</FuncFlag>
        </xml>";    
        if(!empty( $keyword ))
          {
            $msgType = "text";
            $contentStr = "Welcome to wechat world!";
            $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
            echo "success";
           
          }else{
            echo "Input something...";
           
          }
        }else {
          echo "";
          exit;
        }
      }

      // 验证token
      private function checkSignature()
      {
        $signature = $_GET["signature"];
        $timestamp = $_GET["timestamp"];
        $nonce = $_GET["nonce"]; 

        $token = TOKEN;
        $tmpArr = array($token, $timestamp, $nonce);
        sort($tmpArr);
        $tmpStr = implode( $tmpArr );
        $tmpStr = sha1( $tmpStr );

      if( $tmpStr == $signature ){
        return true;
      }else{
        return false;
      }
    }
  }

?>